Ensure Forcing Cleanup Routine on NGEN Failure (NGWPC-10147)#169
Open
idtodd wants to merge 2 commits intodevelopmentfrom
Open
Ensure Forcing Cleanup Routine on NGEN Failure (NGWPC-10147)#169idtodd wants to merge 2 commits intodevelopmentfrom
idtodd wants to merge 2 commits intodevelopmentfrom
Conversation
…n is responsible for the interpreter's lifetime
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Forcing Engine handles cleanup code through a function registered with
atexit.register. When NGEN encounters an error that terminates the simulation early, this cleanup is not currently run. This PR aims to address this problem.The change is to catch the exception from
run_ngen, explicitly destroy the interpreter to ensure python'satexitruns, then rethrow the exception to seg fault the program.There are two places where this update will not fix the current behavior:
abort()orstopin FORTRAN.run_ngen, multiple destructors throw errors. This seems most likely to happen if an exception is thrown on multiple BMIFinalize()steps as the code currently callsFinalize()in the BMIs'shared_ptrdeletion.Additions
Removals
Changes
mainto destroy the python instance ifrun_ngenthrows an exception.InterpreterUtil::getInstance()outsidemainand static methods to ensuremainis solely responsible for maintaining the lifetime of the interpreter.Testing
Screenshots
Notes
Todos
Checklist
Testing checklist (automated report can be put here)
Target Environment support